#ifndef HPLC_QINFINE_PROTOCOLCOMMONDATA_H
#define HPLC_QINFINE_PROTOCOLCOMMONDATA_H

#include <QList>
#include <QByteArray>
#include "baseprotocoldata.h"
#include "hplcqinfinemakepacket.h"
#include "hplcqinfineparsecommonsystempacket.h"
#include "hplcqinfinesendcommonsystempacket.h"
#include "hplcqinfinecheckpacket.h"

namespace hplc
{
namespace qinfine
{

class HplcQinfineProtocolCommonData : public BaseProtocolData
{
public:
    quint8              m_address = 1;

    HplcQinfineMakePacket          *m_maker = nullptr;
    HplcQinfineParseCommonSystemPacket *m_commonSystemParser = nullptr;
    HplcQinfineSendCommonSystemPacket *m_commonSystemSender = nullptr;

    // checker专用
    HplcQinfineCheckPacket         *m_checker = nullptr;
    bool				m_retryTimerStart = false;
    int					m_retryTimerCount = 0;
    quint8              m_retryCount = 0; // 重发计数器
    quint8              m_retryNumber = 2; // 重发次数
    bool				m_tickCheckTimerStart = false;
    int					m_tickCheckTimerCount = 0;
    quint8              m_tickCheckCount = 0; // 计数器
    quint8              m_tickCheckNumber = 3; // 次数

    bool				m_tickTimerStart = true;
    int					m_tickTimerCount = 0;
    quint8              m_tickCount = 0; // 计数器
    quint8              m_tickNumber = 3; // 次数

//    // finder专用
//    quint32             m_framePos = 0;
//    QByteArray          m_rxBufferAscii; // 这个缓冲区主要用于Ascii转Hex

//    QByteArray          m_rxBufferHex;

    QByteArray          m_txBufferHex;
    QList<QByteArray>   m_txBufferHexList;
    QList<QByteArray>   m_txBufferAsciiList;
};

} // qinfine
} // hplc

#endif // HPLC_QINFINE_PROTOCOLCOMMONDATA_H
